Stepper motors are externally commutated motors commonly used for positional tasks. In particular, a stepper motor provides a precise mechanical motion in response to pulsed signals. Unlike DC brushed motors that run at speeds determined by electrical potentials, the stepper motor rotates from one position to another in a precise incremental rotation in each step. A controller provides the pulsed signals needed to advance the stepper motor. A stepper motor may have a toothed iron gear that aligns to magnets surrounding the gear. The gear changes position in response to current applied to coils. A pulse width modulation (“PWM”) circuit may apply pulses to the coils. Moreover, an open loop operation is used to control and operate stepper motors. In this open loop methodology, a driver sends commutation signals to the motor.
Due to the open-loop operation of stepper motors, stepper motors do not provide feedback on whether the motor is stationary (e.g., stalled). A stationary motor can be caused by several conditions. For example, rotation of the electrical field generated by the driver may lose synchronicity with mechanical rotation of the stator, or the mechanical load may exceed the drive capability of the motor. Any obstruction of the load path, including a fixed mechanical stop, also can cause the motor to stop rotating. In these instances, without information on absolute position, the motor will attempt to drive through the obstruction in order to ensure that the load reaches the end point. This can cause wear, audible noise, heating, and mechanical failures. Moreover, several applications require knowledge of whether the motor is operating (e.g., diagnostic information) or the motor has reached the end of travel detection (e.g., position sensing).
Reliable sensorless stall detection for stepper motors across wide system parameters (e.g., supply voltage changes, wide supply ranges, various temperatures, wide motor speed ranges, various motor currents), however, are difficult to achieve.